import random

import numpy as np

# 一: 简单应用
"""生成一个(10,20)之间的随机数组,长度为10,将数组的每位都乘以10"""
lst = [random.randint(10, 20) for i in range(10)]
print(lst, [i * 10 for i in lst], sep="------")

lst2 = np.random.randint(10, 20, size=10)
print(lst2, lst2 * 10, sep="------")

# 二: 属性
lst = np.array([[1, 2, 4], [4, 5, 6]])
print('数组转置换：', lst.T)
print('元素的个数：', lst.size)
print('数组的维数：', lst.ndim)
print('数组的维度大小(元组)：', lst.shape)
print('数组的数据类型：', lst.dtype)
print()

# 三: 创建方式
print('通过数组创建：', np.array([[1, 2, 4], [4, 5, 6]]))
print('创建一个全0的数组：', np.zeros(4, dtype='int'))
print('创建一个全1的数组：', np.ones(4, dtype='int'))
print('创建空数组：', np.empty(4))  # 并不是真正意义上的空
# 类似于range函数,步长可以取小数
print('arange创建：', np.arange(1, 10, 2))
print('arange创建：', np.arange(-10, 1, 2))
print('arange创建：', np.arange(-3, 3, 0.5))
print('arange创建：', np.arange(1, 5).reshape(2, 2))
# random创建
print('random创建：', np.random.randint(1, 6, size=5))
print('random创建：', np.random.uniform(1, 6, size=5))
print('random创建：', np.random.choice(['a', 'b', 'c', 'd'], size=5))
# linspace 多用于画图
print('linspace创建：', np.linspace(-100, 100, 10000))

# 四: 索引 与 切片(取头不取尾)
arr = np.arange(15).reshape(3, 5)
print(arr)
print('第1列：', arr[:, 0])
print('第3行：', arr[2])
print('第3行第4列：', arr[2, 3])
print('第1-2行的第2列行的数据', arr[:2, 1])
print('第2-3行的3-4列的数据', arr[1:, 2:4])
